package _220313;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

/**
 * @author ShadowLim
 * @create 2022-03-13-10:44
 */
public class _日志统计 {
    /**
     *   超时
     *
     */
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int d  = scanner.nextInt();
//        int k = scanner.nextInt();
//
//        HashMap<Integer, ArrayList> map = new HashMap<>();
//        for (int i = 0; i < n; i++) {
//            ArrayList<Integer> list = new ArrayList<>();
//            Integer ts = scanner.nextInt();
//            Integer id = scanner.nextInt();
//            if (map.containsKey(id)) {
//                map.get(id).add(ts);
//            } else {
//                list.add(ts);
//                map.put(id, list);
//            }
//        }
//
//        ArrayList<Integer> ans = new ArrayList<>();
//
//
//        for (Map.Entry<Integer, ArrayList> entry : map.entrySet()) {
//            int start = (int) entry.getValue().get(0);
//            int size = entry.getValue().size();
//            ArrayList temp = entry.getValue();
//            if (size >= k) {
//                int cnt = 0;
//                for (int i = 0; i < size; i++) {
//                    if ((start + d) > (int)temp.get(i)) {
//                        cnt++;
//                        if (cnt >= k) {
//                            ans.add(entry.getKey());
//                        }
//                    }
//                }
//            }
//        }
//        Collections.sort(ans);
//        for (Integer x : ans) {
//            System.out.println(x);
//        }
//    }


    /** 221ms
     * 使用Scanner会超时 要用快读
     * https://blog.csdn.net/a1439775520/article/details/104614790
     * @param args
     */

    static int N = 100010;
    static ClickHot[] logs = new ClickHot[N];
    static int[] cnt = new int[N];
    static boolean[] st = new boolean[N];      // 记录每个帖子是否是热帖

    public static void main(String[] args) throws IOException {
        // 快读
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String[] s1 = in.readLine().split(" ");
        int n = Integer.parseInt(s1[0]);
        int d = Integer.parseInt(s1[1]);
        int k = Integer.parseInt(s1[2]);
        for (int i = 0; i < n; i++) {
            String[] s2 = in.readLine().split(" ");
            int ts = Integer.parseInt(s2[0]);
            int id = Integer.parseInt(s2[1]);
            logs[i] = new ClickHot(ts, id);
        }


        Arrays.sort(logs,0,n);   //对id进行一个排序
        int parentId = logs[0].id;   //第一个ID
        boolean flag = false;   //设置一个标志
        for(int i = 0;i < n; i++) {
            // 因为是按照id排序，所以
            // 如果当前的id有k个赞的话，就是热帖
            // 当前位置和以后的k个位置上都是此id，就有k个赞
            // 并且时间差小于d，并且没有被输出过
            if (i + k- 1 < n && logs[i + k - 1].id == parentId &&
                    logs[i + k - 1].ts - logs[i].ts < d && !flag) {
                System.out.println(parentId);  // 输出这个id 因为题目中只要求输出在同一个时间段有k个赞即可
                flag = true;  // 设置变量，当后面来相同的，但是我不需要输出了，因为k个已经够了
            }
            else if (logs[i].id != parentId) {
                // 如果不是相同id值，那么我就把这个当前的id用我现在i数组中对应的id取代
                //或者这样表述：如果当前的id不是我要找的id，那么要替换要找的id
                parentId = logs[i].id; // 把先前的id替换
                flag = false;//重新设置标记
                i = i - 1;//重新返回这一步寻找
                /**
                 * 按照示例：
                 *  7 10 2
                 *  0   1
                 *  0   10
                 *  10  10
                 *  10  1
                 *  9   1
                 *  100 3
                 *  100 3
                 *
                 * Arrays.sort(arrr,0,n)之后：
                 *  0    1      ①
                 *  9    1      ②
                 *  10   1      ③
                 *  100  3      ④
                 *  100  3      ⑤
                 *  0    10     ⑥
                 *  10   10     ⑦
                 *
                 *  进行到②时 id为1已经是热帖 flag = true
                 *  到③时 id仍 和上次 parentid 一样 都为1 第二个if不满足条件
                 *  因为 flag = true 第一个if也不满足条件
                 *  则遍历下一个日志 即i++
                 *  到④时 当前id= 3 和 parentId = 1不一样
                 *  进入第二个if 更新parentId为当前id（即为3）且flag 更新为 false
                 *  核心点来了 因为当前（即④）的赞还未统计
                 *  故要使得 i 减 1 将④的赞统计到id为3中
                 */
            }
        }
    }
}


class ClickHot implements Comparable<ClickHot> { //创建一个类存放两个每次时间和id
    int ts, id;

    ClickHot(int ts, int id) {
        this.ts = ts;
        this.id = id;
    }

    public int compareTo(ClickHot o) { //先对id做比较，然后对时间做比较
        if (id == o.id)
            return ts - o.ts;
        else
            return id - o.id;
    }
}


/**
 *  法二
 */


//package _220313;
//
//        import java.io.BufferedReader;
//        import java.io.IOException;
//        import java.io.InputStreamReader;
//        import java.util.Arrays;
//
///** 246ms
// * @author yoonalim
// * @create 2022-03-14-12:16
// */
//public class 乘积最大VIP {
//    /**
//     * https://blog.csdn.net/weixin_53407527/article/details/123467961
//     */
//    // 数组cnt（优化）类似于双指针
//    static int N = 100010;
//    static PII[] logs = new PII[N];
//    static int[] cnt = new int[N];
//    static boolean[] st = new boolean[N];      // 记录每个帖子是否是热帖
//
//    public static void main(String[] args) throws IOException {
//        // 快读
//        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//        String[] s1 = in.readLine().split(" ");
//        int n = Integer.parseInt(s1[0]);
//        int d = Integer.parseInt(s1[1]);
//        int k = Integer.parseInt(s1[2]);
//        for (int i = 0; i < n; i++) {
//            String[] s2 = in.readLine().split(" ");
//            int ts = Integer.parseInt(s2[0]);
//            int id = Integer.parseInt(s2[1]);
//            logs[i] = new PII(ts, id);
//        }
//
//        Arrays.sort(logs,0, n);
//
//        for (int i = 0, j = 0; i < n; i++) {
//            int id = logs[i].id;
//            cnt[id]++;  // 记录每个id获得赞的个数
//            // 优化 减少重复计算
//            while (logs[i].ts - logs[j].ts >= d) {  // 若时间跨度大于等于d
//                cnt[logs[j].id]--;  // 减去开头
//                j++;    //加上结尾
//            }
//            if (cnt[id] >= k) {
//                st[id] = true;
//            }
//        }
//        for (int i = 0; i <= 100000; i++) {
//            if (st[i]) {
//                System.out.println(i);
//            }
//        }
//    }
//}
//
//
//class PII implements Comparable<PII>{
//    int ts;
//    int id;
//
//    public PII(int ts, int id) {
//        this.ts = ts;
//        this.id = id;
//    }
//
//    @Override
//    public int compareTo(PII o) {
//        return Integer.compare(ts, o.ts);
//    }
//}